iT邦幫忙

2024 iThome 鐵人賽

DAY 29
1
AI/ ML & Data

征服機器學習的終極秘技系列 第 29

Day 29 - 應用實作練習:模型部署

  • 分享至 

  • xImage
  •  

🌟前言

在完成機器學習模型的訓練和預測後,將模型部署到實際應用中是下一步關鍵的工作🔑。例如在醫療領域🏥,醫療人員需要能夠方便地使用這些模型來做出準確的診斷和決策。然而,僅僅提供程式碼並不符合醫療人員的需求🧑‍⚕️,因此設計一個易於使用的介面很重要。這篇文章將介紹如何使用 Streamlit 這個簡單的工具來構建一個用戶友好的應用程式,讓醫療人員能夠方便地進行預測✨。
https://tse2.mm.bing.net/th?id=OIP.mdvspoBLUMXT4i7VsWzQ8QHaEV&pid=Api&P=0&h=180

🛠環境準備

建議使用自己電腦上的 Python 進行部署💻,因為這樣可以更好地控制環境設定和相容性,並能避免在 Google Colab 中可能遇到的限制,例如計算資源的使用限制和連線問題。此外,使用本地環境可以更方便地進行測試🧪。首先,您需要確保已經安裝了以下 Libraries📦:

pip install streamlit 
pip install pandas 
pip install scikit-learn

💡實作步驟

1️⃣ 匯入所需的 Libraries

在您的 Python 檔案中,首先需要匯入必要的 Libraries📚:

import streamlit as st 
import pandas as pd 
import pickle 

2️⃣ 載入預訓練的模型

載入之前訓練好的機器學習模型。確保模型檔案與應用程式在 同一路徑(目錄) 中📁。

# 載入模型 
model = pickle.load(open('model.pkl', 'rb'))

3️⃣ 設計用戶介面

使用 Streamlit 的功能建立簡單的用戶介面。這裡我們將設計一個讓醫療人員可以輸入檢查結果的輸入框📝:

st.title("病患預測系統")
# 用戶輸入
input_data = { 
    'feature1': st.number_input('輸入特徵 1'), 
    'feature2': st.number_input('輸入特徵 2'), 
    # 添加其他特徵的輸入框 
} 
# 將輸入數據轉換為 DataFrame 
input_df = pd.DataFrame([input_data])

以下也提供一些常用的輸入方式:

  1. 建立滑桿:例如病患年齡可以設計滑動的方式,讓使用者直觀地選擇所需的數值📊。
value = st.slider('病患年齡', min_value=0, max_value=100, value=50)

這段程式碼會生成一個範圍從 0 到 100 的滑桿,預設值為 50。你可以根據需要調整參數。
2) 建立下拉式選單:針對如 Admission Type 等有限選項的欄位(例如 Urgent、Emergency、Elective),可以設計成下拉式選單,以便使用者直接選擇適合的選項 ☑️。這樣可以避免使用者手動輸入,提升使用體驗及操作效率。

# 創建下拉式選單
options = ['Urgent', 'Emergency', 'Elective']
selected_option = st.selectbox('請選擇 Admission Type', options)
  1. 上傳檔案:有時使用者會希望直接將病患報告變成一份檔案,不想要自行輸入或跟介面互動,此時可以讓使用者上傳檔案並由後端自行讀取並作相對應的需求📂,檔案形式可以是 csv、txt、jpg 或 png。
# 創建檔案上傳
uploaded_file = st.file_uploader("上傳檔案", type=['csv', 'txt', 'jpg', 'png'])
if uploaded_file is not None:
    # 處理上傳的檔案
    st.write('檔案名稱:', uploaded_file.name)
    # 若需要,您可以讀取檔案內容
    # data = pd.read_csv(uploaded_file)
  1. 若您想要輸出結果,我們不再用 print(),而是使用 st.write() 取代✍️。

以上這幾種都是最常見且常用到的功能,當然還有很多功能等著被探索🚀,很多時候都是需要用到的時候再去官方網站的 Streamlit Document 去查詢寫法📖。

https://www.askpython.com/wp-content/uploads/2022/10/streamlit-font.png
Streamlit 介面功能示意圖

4️⃣ 執行預測

在用戶輸入數據後,使用模型進行預測並顯示結果📈。

if st.button('預測'):
    prediction = model.predict(input_df)
    st.write('預測結果:', prediction[0])

https://user-images.githubusercontent.com/94877868/182915037-fd8e1751-0763-47e7-9764-cfa59e561e7d.png
Streamlit 預測功能示意圖

5️⃣ 運行應用程式

在終端機 (terminal) 執行以下 Command 啟動 Streamlit 應用🖥️:

streamlit run your_script.py

請記得將 "your_script.py" 換成你自己的檔名喔~😄

✅結論

使用 Streamlit 部署機器學習模型是一個簡單有效的方法,可以讓醫療人員方便地進行預測。這些範例及示意圖展現了如何快速建立一個應用程式,並為醫療人員提供直觀的數據輸入和結果顯示✨。部署過程涉及到許多細節,也建議大家可以自行深入了解 MLOps🌐。MLOps 是一個涵蓋模型管理、部署和監控的綜合性領域,能夠幫助您更有效地進行機器學習專案。

參考資料:
https://engnawal.github.io/Data-analysis-using-ml-streamlit/
https://www.askpython.com/python-modules/streamlit-theming
https://docs.streamlit.io/get-started/installation
https://with-kwang.tistory.com/57


上一篇
Day 28 - 應用實作練習:模型預測
下一篇
Day 30 - 機器學習之路的終章:逆襲小白兔🐰
系列文
征服機器學習的終極秘技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言